package com.hadwinling.service;

import com.hadwinling.entity.NuclearParam;
import org.apache.iotdb.rpc.IoTDBConnectionException;
import org.apache.iotdb.rpc.StatementExecutionException;
import org.apache.iotdb.session.SessionDataSet;
import org.apache.iotdb.tsfile.read.common.Field;

import java.util.ArrayList;
import java.util.List;

/**
 * @Classname IoTDBService
 * @Description TODO
 * @Date 2021/7/3 15:28
 * @Created by
 */
public interface IoTDBService {
    /**
     * 设置存储组
     *
     * @param storageGroup 设定存储组ID
     */
    void setStorageGroup(String storageGroup);

    /**
     * 删除存储组
     *
     * @param storageGroup 指定要删除的存储组
     */
    void deleteStorageGroup(String storageGroup);

    /**
     * 插入数据
     *
     * @param storage    要插入到的存储组
     * @param zujianNum  组件数量
     * @param zhibiaoNum 指标数量
     */
    void insert(String storage, int zujianNum, int zhibiaoNum);

    /**
     * 2.1 plot_burn_ind_mod (burn,indicator,module)
     *
     * @param nuclearParam 传过来的值
     * @return
     */
    SessionDataSet plot_burn_indicator_module(NuclearParam nuclearParam);

    /**
     * 2.2 plot_act_burn_ind_mod(burn,indicator,module)
     * 给定 燃耗步，指标，组件值；得层、时刻的变化（2D动态图）
     *
     * @param nuclearParam 传过来的值
     * @return
     */
    SessionDataSet plot_act_burn_ind_mod(NuclearParam nuclearParam);


    /**
     * 2.3 plot_mod_ind_time(module,indicator,time)
     * #给定组件、指标、时刻, 得燃耗步、层 变化（3D图）
     *
     * @param nuclearParam 传过来的值
     * @return
     */
    ArrayList<List<Field>> plot_mod_ind_time(NuclearParam nuclearParam) throws StatementExecutionException, IoTDBConnectionException;

    /**
     * 2.4 plot_mod_lay_ind(module,layer,indicator)
     * #给定组件、层，指标，展示燃耗步、时刻、值的变化（3D图）
     *
     * @param nuclearParam 传过来的值
     * @return
     */
    SessionDataSet plot_mod_lay_ind(NuclearParam nuclearParam);

    /**
     * 2.5plot_mod_lay_ind_2d(module,layer,indicator)
     * #给定组件、层，指标，展示燃耗步、时刻、值的变化（2D图）
     *
     * @param nuclearParam
     * @return
     */
    SessionDataSet plot_mod_lay_ind_2d(NuclearParam nuclearParam);

    /**
     * 2.6plot_butn_ind_time(burn,indicator,time)
     * #给定燃耗步，指标，时刻，展示组件、层、值的变化（3D图）
     *
     * @param nuclearParam
     * @return
     */
    ArrayList<List<Field>> plot_butn_ind_time(NuclearParam nuclearParam) throws StatementExecutionException, IoTDBConnectionException, InterruptedException;

    /**
     * 2.7 plot_burn_ind(burn,indicator,m_s=0,m_e=5,t_s=0,t_e=10):
     * #给定燃耗步，指标，展示时刻、组件、层、值的变化（3D四维图）
     *
     * @param nuclearParam
     * @return
     */
    ArrayList<List<Field>> plot_burn_ind(NuclearParam nuclearParam) throws StatementExecutionException, IoTDBConnectionException, InterruptedException;


    /**
     * 给定燃耗步，指标，时刻 ，查找所有组件，所有层即52*32
     *
     * @param nuclearParam
     * @return
     */
    ArrayList<List<Field>> plot_burn_time_indicator(NuclearParam nuclearParam) throws StatementExecutionException, IoTDBConnectionException;

}
